package com.jar.exercise.集合和数据结构.过滤数组中重复数据;

import java.util.Arrays;

/**
 * 过滤数组中重复数据
 */
public class Demo1 {
	public static void main(String[] args) {
		Integer[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3};
		Object[] objects = ifRepeat(arr);
		for (Object object : objects) {
			System.out.println(object);
		}
	}

	/**
	 * 去除重复的数据
	 *
	 * @param objects 原数组
	 * @return 去除重复数据后的数组
	 */
	private static Object[] ifRepeat(Object[] objects) {
		int t = 0;
		Object[] objects1 = new Object[objects.length];
		//外层遍历这个数组
		for (int i = 0; i < objects.length; i++) {
			boolean flag = true;
			//内层一一对比如果有重复的跳出并记录
			for (int j = i + 1; j < objects.length; j++) {
				//重复了
				if (objects[i] == objects[j]) {
					flag = false;
					break;
				}
			}
			//遍历一次没有重复就添加到新数组中
			if (flag) {
				objects1[t] = objects[i];
				t++;
			}
		}
//        Object[] newArr = new Object[t];
		//将arr1数组里从索引为2的元素开始, 复制到数组arr2里的索引为5的位置, 复制的元素个数为10个.
		//Arrays.copyOf(objects1,t);底层用的还是System.arraycopy
//        System.arraycopy(objects1, 0, newArr, 0, t);

		return Arrays.copyOf(objects1, t);
	}
}
